package com.origin.niuke.array;

import java.util.Arrays;

/**
 * @author yzh
 * @version 1.0
 * @date 2022/4/20 11:23
 * 给你一个未排序的整数数组 nums ，请你找出其中没有出现的最小的正整数。
 * 一个数组中最多能够包含的正整数是 1 ~ n, 所以最大的正整数是 n + 1
 * 所以可以根据索引来判断这个数是否存在
 */
public class 缺失的第一个正数 {
    public static void main(String[] args) {
        int[] nums = new int[]{1, 2, 3};
        int[] old = new int[nums.length + 1];
        System.arraycopy(nums, 0, old, 1, 0);
        System.out.println(Arrays.toString(old));
    }

    public int minNumberdisappered(int[] arr) {

        int n = arr.length;
        for (int i = 0; i < n; i++) if (arr[i] <= 0) arr[i] = n + 1;
        for (int i = 0; i < n; i++) {
            int idx = Math.abs(arr[i]);
            if (idx <= n && arr[idx - 1] > 0) arr[idx - 1] *= -1;
        }
        for (int i = 0; i < n; i++) if (arr[i] > 0) return i + 1;
        return n + 1;
    }

}
